Database applications can be loosely classified into categories depending on the applications' specific requirements--for example, whether an application requires fast query response time or efficient update processing. Each category of applications favors a different logical data organization and physical data distribution. Two examples are the so-called OLTP (On-Line Transaction Processing) and OLAP (On-Line Analysis Processing). For OLTP applications, a primary concern is high throughput for updates. In contrast, a primary concern for OLAP applications, which must deal with ad-hoc queries, is fast query response and high query throughput.
Another category of database applications that may be defined is referred to herein as "OLFP" (On-Line Fetch Processing). OLFP applications have the following characteristics: (1) most transactions (e.g., approximately 80% or more) are read-only; (2) most of the read-only transactions (e.g., approximately 80% or more) access data using key-based selections (referred to as "data fetching"); and (3) substantially all transactions are defined at system design time, as opposed to being ad hoc. Generally, OLFP transactions require very high throughput (for example, supporting hundreds of concurrent read transactions per second) and very short query response time, usually less than 500 milliseconds.
OLFP applications particularly arise in telecommunications, automated control systems, on-line financial transactions, and many embedded real-time database applications. For instance, in telephone switches, most of the transactions are queries for call processing, since there are only a small number of updates to reflect changes in the telephone network, such as new routing information and changes to customers' features. Other examples of OLFP applications include Internet routers and on-line credit card purchase approval systems.
Currently, to meet real-time requirements, OLFP applications are served by a database organization in which data is typically highly redundant, aggregated and stored in main-memory data management systems to avoid disk latency. However, this organization negatively impacts update processing performance and results in significant increases in the complexity of the supporting software.